/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package Controlador.Service.Compras;



import Controlador.Bean.Almacen.Producto;
import Controlador.Bean.Compras.CatalogoData;
import Controlador.Bean.Compras.Distrito;
import Controlador.Bean.Compras.EvaluaProveedor;
import Controlador.Bean.Compras.Factura;
import Controlador.Bean.Compras.ProductoxOrden;
import Controlador.Bean.Compras.ProductoxProveedor;
import java.util.ArrayList;
import Controlador.Bean.Compras.Proveedor;
import Controlador.Bean.Compras.ProvxProd;
import Controlador.Bean.Compras.Solicitud;
import Controlador.Bean.RRHH.Personal;
import Data.config.SessionFac;
import java.util.Date;
import java.util.List;
import org.apache.ibatis.session.SqlSession;

/**
 *
 * @author LiziTa
 */
public class GestionCompra {
    
    
    
    
    
    
    //EVALUA PROVEEDOR
    public  static List<EvaluaProveedor> obtenerResultado(EvaluaProveedor ep,String id){
    ServicioEvaluaProveedor seproveedor = new ServicioEvaluaProveedor();
    return seproveedor.obtenerResultado(ep,id);
    }
        
    //factura
    
           public static String obtenerIdSiguienteFactura(){
        ServicioFactura sfactura = new ServicioFactura();
        return sfactura.obtenerIdSiguienteFactura();
    }
    
    
    public  static List<Factura> obtenerFactura(){
    ServicioFactura sfactura = new ServicioFactura();
    return sfactura.obtenerFactura();
    }
    
    
    public  static List<Factura> obtenerFacturaFiltro(String id, String fi,String ff){
    ServicioFactura sfactura = new ServicioFactura();
    return sfactura.obtenerFacturaFiltro(id,fi,ff);
    }
    
      public static void agregarFactura(Factura factura){
        
        ServicioFactura sfactura = new ServicioFactura();
       sfactura.guardar(factura);
           }
    
      //productoxproveedor
      public static List<Producto> seleccionarMatPrima(){
        ServicioProductoxProveedor scatalogo = new ServicioProductoxProveedor();
        return scatalogo.seleccionarMatPrima();
    }
    
    
       public static List<ProductoxProveedor> obtenerProdxProv(String prov, String prod){
         ServicioProductoxProveedor sproveedor = new ServicioProductoxProveedor();
        return sproveedor.seleccionarTodo(prov,prod);
    }  
         
   
             public static List<ProvxProd> seleccionarProvxProd(String prov){
         ServicioProductoxProveedor sproveedor = new ServicioProductoxProveedor();
        return sproveedor.seleccionarProvxProd(prov);
    }
    
              public static List<CatalogoData> filtrarProdxProv(String prov, String prod){
        ServicioProductoxProveedor ssproveedor = new ServicioProductoxProveedor();
        return ssproveedor.filtrarProdxProv(prov, prod);
    }  
              
      public static int eliminarProdxProv(String prov,String prod){
          
           if(!ProveedorTieneOC(prov,prod)){
        ServicioProductoxProveedor sproveedor = new ServicioProductoxProveedor();
        sproveedor.eliminar(prov,prod);
          return 0;
        }else{
            return 1;
        }
      
    }
      
       public static boolean ProveedorTieneOC(String prov,String prod){
            boolean b;
            Integer cant;
            ServicioProveedor sproveedor = new ServicioProveedor();
            cant=sproveedor.buscarOC(prov);  
            if (cant>0) return b= true; else return b= false;
           
    }
       
       
               public static boolean existeproducto(String prod,String prov){
            boolean b;
            Integer cant;
            ServicioProveedor sproveedor = new ServicioProveedor();
            cant=sproveedor.existeproducto(prod,prov);  
            if (cant>0) return b= true; else return b= false;
           
    }
       
      
       public static void agregarProdxProv(ProductoxProveedor productoxprov){
            ServicioProductoxProveedor sproductoxprov = new ServicioProductoxProveedor();
            sproductoxprov.guardar(productoxprov);
    }
       
       public static void agregarProdxProv(ArrayList<String> codProveedores){
           SqlSession sqlsession=null;
           try{           
                sqlsession= SessionFac.SessionFactory().openSession();
                ServicioProductoxProveedor sproductoxprov = new ServicioProductoxProveedor();
                sproductoxprov.guardar(codProveedores,sqlsession);           
                sqlsession.commit();
           }
           catch(Exception e){           
           sqlsession.rollback();                      
           }
           finally{
               if(sqlsession!=null) sqlsession.close();            
           }
    }
    
       public static void actualizarProdxProv(ProductoxProveedor productoxprov,String id,String prov){
        ServicioProductoxProveedor sproductoxProv = new ServicioProductoxProveedor();
        sproductoxProv.actualizar(productoxprov,id,prov);
    }     
              
     
            
       
     //PRODUCTOXORDEN  
       
        public static List<ProductoxOrden> obtenerProdxOrden(String id){
        ServicioProductoxOrden sprodxorden = new ServicioProductoxOrden();
        return sprodxorden.seleccionarTodo(id);
    }
    
        
        
          public static List<ProductoxOrden> obtenerProdxOrdenFactura(String id){
        ServicioProductoxOrden sprodxorden = new ServicioProductoxOrden();
        return sprodxorden.obtenerProdxOrdenFactura(id);
    }
        
        
                 public static List<ProductoxProveedor> seleccionarProductosdeProveedor(String id){
        ServicioProductoxProveedor sprodxorden = new ServicioProductoxProveedor();
        return sprodxorden.seleccionarProductosdeProveedor(id);
    }
        
                            public static List<ProductoxProveedor> seleccionarProd(String id){
        ServicioProductoxProveedor sprodxorden = new ServicioProductoxProveedor();
        //return sprodxorden.seleccionarProd(id);
        return null;    
    }
        
                 
                 
     public static List<ProductoxOrden> obtenerProdxOrden2(String id){
        ServicioProductoxOrden sprodxorden = new ServicioProductoxOrden();
        return sprodxorden.seleccionarFiltro2(id);
    }     
     
     
     public  static Double obtenerCantOrden(String id){
        ServicioProductoxOrden sprodxorden = new ServicioProductoxOrden();
        return sprodxorden.obtenerCantOrden(id);
    }    
     
     
              public  static String obtenerRazon(String oc,String prov ){
        ServicioProductoxOrden sprodxorden = new ServicioProductoxOrden();
        return sprodxorden.obtenerRazon(oc,prov);
    }    
     
      public static List<ProductoxOrden> FiltroSolAlmacen(String id){
        ServicioProductoxOrden sprodxorden = new ServicioProductoxOrden();
        return sprodxorden.FiltroSolAlmacen(id);
    }  
     
        
         public static void eliminarProdxOrd(ProductoxOrden pxo){
        ServicioProductoxOrden sproveedor = new ServicioProductoxOrden();
        sproveedor.eliminar(pxo);
      
    }
          public static Double suma(String id){
            ServicioProductoxOrden ssolicitud = new ServicioProductoxOrden();
                    return ssolicitud.suma(id);
    }
         
         
       
          public static void agregarProductoxOrden(ProductoxOrden productoxOrden,String id ){
            ServicioProductoxOrden sproductoxOrden = new ServicioProductoxOrden();
            sproductoxOrden.guardar(productoxOrden,id);
    }
    
       public static void actualizarProductoxOrden(ProductoxOrden productoxOrden,String idprod, String idorden){
        ServicioProductoxOrden sproductoxOrden = new ServicioProductoxOrden();
        sproductoxOrden.actualizar(productoxOrden,idprod,idorden);
    }    
         
           public static  List<Distrito> seleccionarDistritos(){
                  ServicioDistrito sdistrito= new  ServicioDistrito();
                     return sdistrito.seleccionarDistritos();
            
       }
           
           public static  void cargaMasivaProveedores(String file){
                   SqlSession sqlSession= SessionFac.SessionFactory().openSession();
                    try{
                       ArrayList<String> codProvs= null;
                       ServicioProveedor servProveedor= new ServicioProveedor();       
                       ServicioProductoxProveedor servProductoxProveedor= new ServicioProductoxProveedor();
                       codProvs=servProveedor.cargaMasivaProveedor(file,sqlSession);
                       servProductoxProveedor.guardar(codProvs, sqlSession);
                       sqlSession.commit();
                    }
                    catch(Exception e){
                        sqlSession.rollback();
                    }
                    finally{
                        sqlSession.close();
                    }         
       }
      
           //SolicitudCompra
           
                public static String obtenerIdSiguienteOC(){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        return ssolicitud.obtenerIdSiguienteOC();
    }
           
            public static List<Solicitud> obtenerSolicitudes(){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        return ssolicitud.seleccionarTodo();
    }
           
            
              public static List<Solicitud> obtenerSolicitudesEnvAlm(){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        return ssolicitud.obtenerSolicitudesEnvAlm();
    }
        
            
    public static List<Solicitud> obtenerSolicitudes(String id){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        return ssolicitud.seleccionarTodo();
    }
    
    public static List<Solicitud> obtenerOrdenMov(){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        return ssolicitud.obtenerOrdenMov();
    }
    
     public static List<Solicitud> obtenerOrdenMov2(){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        return ssolicitud.obtenerOrdenMov2();
    }
    
       public static List<Solicitud> obtenerOrden(){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        return ssolicitud.obtenerOrden();
    }
    
        public static List<Solicitud> obtenerOrdenSinFactura(){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        return ssolicitud.obtenerOrdenSinFactura();
    }
    
    
     public static List<Solicitud> obtenerOrdenxFiltro(String s){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        return ssolicitud.seleccionarOrdenxFiltro(s);
    }
    
     public static List<Solicitud> filtrarSolicitudes(String id, String nombre){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        return ssolicitud.filtrarSolicitudes(id, nombre);
    }
    
     
             public static List<Solicitud> obtenerSolxFiltro(String id, String fi,String ff){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        return ssolicitud.obtenerSolxFiltro(id, fi,ff);
    }
     
              public static List<Solicitud> obtenerSolxFiltroAlm(String id, String fi,String ff){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        return ssolicitud.obtenerSolxFiltroAlm(id, fi,ff);
    }
     
    
        
    public static void agregarSolicitud(Solicitud solicitud){
            ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
            ssolicitud.guardar(solicitud);
    }
    
     public static Long verNumSol(){
            ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
            return ssolicitud.obtenerNumSol();
    }
     
      
    
      public static void actualizarSolicitud(Solicitud solicitud){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
       
        ssolicitud.actualizar(solicitud);
    }
     
       public static void actualizarMonto(Solicitud solicitud){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
       
        ssolicitud.actualizarM(solicitud);
    }
       
       public static void actualizarEstado(String id){
        ServicioSolicitudCompra ssolicitud = new ServicioSolicitudCompra();
        ssolicitud.actualizarEstado(id);
    }
       
       
       public static List<Personal> obtenerPersonal(){
        ServicioSolicitudCompra spersonal = new ServicioSolicitudCompra();
        return spersonal.seleccionarPersonal();
    }
      
    public static String obtenerIdMov(String tipo){
         ServicioSolicitudCompra sSolMov = new ServicioSolicitudCompra();
         return sSolMov.obtenerIdMov(tipo);
        }
     
         
             public static void eliminarOrden(String id){
        ServicioSolicitudCompra ssc = new ServicioSolicitudCompra();
        ssc.eliminarOrden(id);
      
    }
    
   
    //CATALOGO
        public static void agregarCatalogo(Object catalogo){
        
        SqlSession session = SessionFac.SessionFactory().openSession();
        try{
            //ServicioCatalogo sp = session.getMapper(ServicioCatalogo.class);
            //sp.guardar(catalogo);
            session.commit();
        }finally{
            session.close();
        }
        
    }
           
     public static List<CatalogoData> seleccionarCatalogo(String prov, String prod){
         ServicioCatalogo scat = new ServicioCatalogo();
        return scat.seleccionarCatalogo(prov,prod);
    }
     
     
     //PROVEEDOR
     
      public static List<Proveedor> obtenerProveedor(){
         ServicioProveedor sproveedor = new ServicioProveedor();
        return sproveedor.seleccionarTodo();
    }
    
     public static List<Proveedor> filtrarProveedor(String id, String razonSocial){
        ServicioProveedor ssproveedor = new ServicioProveedor();
        return ssproveedor.filtrarProveedor(id, razonSocial);
    }
    
        

     
     
    public static void agregarProveedor(Proveedor proveedor){
        
        ServicioProveedor sproveedor = new ServicioProveedor();
       sproveedor.guardar(proveedor);
       
    }     
    
     public static void actualizarProveedor(Proveedor proveedor){
        ServicioProveedor sproveedor = new ServicioProveedor();
        sproveedor.actualizar(proveedor);
    }
     
   

    
    
       public static int eliminarProveedores(String id){
            if(!ProveedorTieneCatalogo(id)){
        ServicioProveedor sproveedor = new ServicioProveedor();
        sproveedor.eliminar(id);  
        return 0;
        }else{
            return 1;
        }
      
    }
       
        public static boolean ProveedorTieneCatalogo(String id){
            boolean b;
            Integer cant;
            ServicioProveedor sproveedor = new ServicioProveedor();
            cant=sproveedor.buscarCat(id);  
            if (cant>0) return b= true; else return b= false;
           
    }
       
      
     
    
     
        
       
    
    public static ArrayList<String> seleccionarFila(String id ){
        ServicioProveedor sproveedor = new ServicioProveedor();
           return  sproveedor.seleccionarFila(id);
    }
                     
  
    
     
      
          
         
     

    
 
      
   
    
       
}
